package com.example.yyjc.util.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.BaseRowModel;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/** 解析监听器，
 * 每解析一行会回调invoke()方法。
 * 整个excel解析结束会执行doAfterAllAnalysed()方法
 */

/**
 * @ClassName ExcelListener
 * @Description TODO  监听器类
 * @Author lvyongwei
 * @Date 2020-05-21 14:13
 **/
public class ExcelListener extends AnalysisEventListener<BaseRowModel> {
    //可以通过实例获取该值
    /**
     * 自定义用于暂时存储data
     */
    private List<Object> datas = new ArrayList<Object>();

    private boolean flag = true;

    private Map<Integer,String> sysMap;
    /**
     * 获取导入文件的标题，导入时候会读取数据硬塞给实体，所以判断头部是不是想要的文件
     * @param headMap
     * @param context
     */
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        sysMap = headMap;
    }

    @Override
    public void invoke(BaseRowModel object, AnalysisContext context) {
        //System.out.println("当前行："+context.getCurrentRowNum());
        //数据存储到list，供批量处理，或后续自己业务逻辑处理。
        datas.add(object);
    }


    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //datas.clear();//解析结束销毁不用的资源
    }

    public List<Object> getDatas() {
        return datas;
    }

    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }

    public Map<Integer, String> getSysMap() {
        return sysMap;
    }

    public void setSysMap(Map<Integer, String> sysMap) {
        this.sysMap = sysMap;
    }
}
